home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / flyout / module1.bas < prev    next >
BASIC Source File  |  1995-05-09  |  22KB  |  561 lines

  1. Option Explicit
  2.  
  3. '*************************************************************************
  4. '*                                                                       *
  5. '*                            GLOBAL CONSTANTS                           *
  6. '*                                                                       *
  7. '*************************************************************************
  8.  
  9.  
  10. '
  11. ' GetSystemMetrics() codes
  12. '
  13.  
  14. Global Const SM_CXSCREEN = 0
  15. Global Const SM_CYSCREEN = 1
  16. Global Const SM_CXVSCROLL = 2
  17. Global Const SM_CYHSCROLL = 3
  18. Global Const SM_CYCAPTION = 4
  19. Global Const SM_CXBORDER = 5
  20. Global Const SM_CYBORDER = 6
  21. Global Const SM_CXDLGFRAME = 7
  22. Global Const SM_CYDLGFRAME = 8
  23. Global Const SM_CYVTHUMB = 9
  24. Global Const SM_CXHTHUMB = 10
  25. Global Const SM_CXICON = 11
  26. Global Const SM_CYICON = 12
  27. Global Const SM_CXCURSOR = 13
  28. Global Const SM_CYCURSOR = 14
  29. Global Const SM_CYMENU = 15
  30. Global Const SM_CXFULLSCREEN = 16
  31. Global Const SM_CYFULLSCREEN = 17
  32. Global Const SM_CYKANJIWINDOW = 18
  33. Global Const SM_MOUSEPRESENT = 19
  34. Global Const SM_CYVSCROLL = 20
  35. Global Const SM_CXHSCROLL = 21
  36. Global Const SM_DEBUG = 22
  37. Global Const SM_SWAPBUTTON = 23
  38. Global Const SM_RESERVED1 = 24
  39. Global Const SM_RESERVED2 = 25
  40. Global Const SM_RESERVED3 = 26
  41. Global Const SM_RESERVED4 = 27
  42. Global Const SM_CXMIN = 28
  43. Global Const SM_CYMIN = 29
  44. Global Const SM_CXSIZE = 30
  45. Global Const SM_CYSIZE = 31
  46. Global Const SM_CXFRAME = 32
  47. Global Const SM_CYFRAME = 33
  48. Global Const SM_CXMINTRACK = 34
  49. Global Const SM_CYMINTRACK = 35
  50. Global Const SM_CMETRICS = 36
  51.  
  52.  
  53. '
  54. ' API message constants.
  55. '
  56.  
  57. Global Const WM_MOVE = &H3
  58. Global Const WM_MOUSEFIRST = &H200
  59. Global Const WM_MOUSEMOVE = &H200
  60. Global Const WM_LBUTTONDOWN = &H201
  61. Global Const WM_LBUTTONUP = &H202
  62. Global Const WM_LBUTTONDBLCLK = &H203
  63. Global Const WM_RBUTTONDOWN = &H204
  64. Global Const WM_RBUTTONUP = &H205
  65. Global Const WM_RBUTTONDBLCLK = &H206
  66. Global Const WM_MBUTTONDOWN = &H207
  67. Global Const WM_MBUTTONUP = &H208
  68. Global Const WM_MBUTTONDBLCLK = &H209
  69. Global Const WM_MOUSELAST = &H209
  70.  
  71. ' Key State Masks for Mouse Messages
  72. Global Const MK_LBUTTON = &H1
  73. Global Const MK_RBUTTON = &H2
  74. Global Const MK_SHIFT = &H4
  75. Global Const MK_CONTROL = &H8
  76. Global Const MK_MBUTTON = &H10
  77.  
  78.  
  79. '
  80. ' My constants
  81. '
  82.  
  83. Global Const MODELESS = 0                    ' Show forms as modeless.
  84. Global Const MODAL = 1                       ' Show forms as modal.
  85.  
  86. Global Const LEFT_BUTTON = 1                 ' VB's code for left mouse button in MouseDown event.
  87. Global Const RIGHT_BUTTON = 2                ' VB's code for right mouse button in MouseDown event.
  88.  
  89. Global Const MAX_TOOLBOX_ITEMS = 16          ' Maximum number of items allowed in a toolbox.
  90. Global Const MAX_FLYOUT_ITEMS = 16           ' Maximum number of items allowed in a flyout.
  91.  
  92. Global Const WM_USER = &H400                 ' Used in PostMessage() call from flyout to toolbox.
  93.  
  94. Global Const ICON_ARC = 0                    ' Indexes into PictureClip control bitmap for all
  95. Global Const ICON_BOLD = 5                   '  icons.  Bitmap is 5 columns by 20 rows.  The
  96. Global Const ICON_BUTTON = 10                '  first column contains the normal version of
  97. Global Const ICON_CAMERA = 15                '  each icon.  The second column contains the
  98. Global Const ICON_CENTERJUST = 20            '  depressed version of the icon.  Columns 3-5
  99. Global Const ICON_DOUBLEUNDERLINE = 25       '  are not used.
  100. Global Const ICON_HELP = 30
  101. Global Const ICON_ITALIC = 35
  102. Global Const ICON_FULLJUST = 40
  103. Global Const ICON_LEFTJUST = 45
  104. Global Const ICON_LINE = 50
  105. Global Const ICON_MACRO = 55
  106. Global Const ICON_OVAL = 60
  107. Global Const ICON_PRINTER = 65
  108. Global Const ICON_RECTANGLE = 70
  109. Global Const ICON_SMALLCAPS = 75
  110. Global Const ICON_SUMMATION = 80
  111. Global Const ICON_CENTERTAB = 85
  112. Global Const ICON_DECIMALTAB = 90
  113. Global Const ICON_LEFTTAB = 95
  114.  
  115. Global Const ICON_DEPRESSED = 1              ' Add this to the base index of an icon to get the
  116.                                              '  PictureClip control index for the depressed icon.
  117.  
  118. '*************************************************************************
  119. '*                                                                       *
  120. '*                       DATA STRUCTURE DEFINITIONS                      *
  121. '*                                                                       *
  122. '*************************************************************************
  123.  
  124. Type POINTAPI
  125.    X As Integer
  126.    Y As Integer
  127. End Type
  128.  
  129.  
  130. Type tagIcons
  131.    icon_index                 As Integer     ' Index of icon im PictureClip control
  132.    help_str                   As String      ' Help string for this icon
  133. End Type
  134.  
  135.  
  136. Type tagFlyoutData
  137.    num_icons                  As Integer
  138.    num_columns                As Integer
  139.    num_rows                   As Integer
  140. End Type
  141.  
  142.  
  143. Type tagToolBox
  144.    title                      As String      ' Caption for toolbox window
  145.    num_items                  As Integer     ' Number of icons in this toolbox (must be 1..16)
  146.    num_columns                As Integer     ' Number of column in this toolbox (must defined)
  147.    num_rows                   As Integer     ' Number of rows in toolbox (is calculated)
  148.    tool_selected              As Integer     ' Index in icons() of selected tool.
  149.    icons(0 To 15, 0 To 16)    As tagIcons    ' Contains description for all icons in a toolbox
  150.                                              '  as well as the flyout associated with each tool.
  151.                                              '  icons(x,0) is description for toolbox tool icon X
  152.                                              '  icons(x,y) is decsription for icon Y on the
  153.                                              '  flyout menu displayed when tool X is selected.
  154.    flyout_data(0 To 15)       As tagFlyoutData
  155.                                              ' Contains data for every flyout.  The number_icons
  156.                                              '  and num_columns fields must be set.  The num_rows
  157.                                              '  field is calulated.  Each element corresponds to
  158.                                              '  the flyout for the toolbox icon with the same
  159.                                              '  index.  the field number_icons must be in the
  160.                                              '  range 1..16.  The field num_columns must be
  161.                                              '  defined; num_rows is calculated.
  162.    flyout_item_selected       As Integer     ' Index in icons() for the flyout menu icon selected
  163.                                              '  (e.g., icons(tool_selected,flyout_item_selected))
  164. End Type
  165.  
  166.  
  167.  
  168. '*************************************************************************
  169. '*                                                                       *
  170. '*                            GLOBAL VARIABLES                           *
  171. '*                                                                       *
  172. '*************************************************************************
  173.  
  174. Global gToolbox As tagToolBox                 ' The definition for our toolbox.
  175.  
  176.  
  177. '*************************************************************************
  178. '*                                                                       *
  179. '*                    API AND DLL ROUTINE DECLARATIONS                   *
  180. '*                                                                       *
  181. '*************************************************************************
  182.  
  183. Declare Function GetSystemMetrics% Lib "User" (ByVal nIndex%)
  184. Declare Sub dwDWORDto2Integers Lib "dwspydll.dll" (ByVal l&, X%, Y%)
  185. Declare Sub MoveWindow Lib "User" (ByVal hWnd%, ByVal X%, ByVal Y%, ByVal nWidth%, ByVal nHeight%, ByVal bRepaint%)
  186. Declare Function SetCapture% Lib "User" (ByVal hWnd%)
  187. Declare Sub ReleaseCapture Lib "User" ()
  188. Declare Function PostMessage% Lib "User" (ByVal hWnd%, ByVal wMsg%, ByVal wParam%, ByVal lParam&)
  189.  
  190. Sub ArrangeFlyout ()
  191.  
  192.    Dim border_width%                   ' Width of the flyout window border
  193.    Dim